﻿//----------------------------------------------------------------
// Desc: 
// Edit: ShowLong, http://blog.csdn.net/showlong
//
// Date Created: 2011-04-19
//
// Update Date :
//
// Copyright (c) Fuel4D (http://www.fuel4d.com), All rights reserved.
//
//----------------------------------------------------------------
#pragma once


class IFAudio : public IFServeObject
{
protected:
    explicit IFAudio(EF_SOUND_TYPE t)
        :nType(t)
    {}

public:
    const EF_SOUND_TYPE nType;

    // 初始化
    // .files 背景音乐列表
    // .play_now 立即播放
    // .back_start 背景音乐在files的起始索引
    //             默认所有files都是背景音乐，但是在back_start之前的这些文件为手动背景音乐，不被随机自动播放
    virtual bool Init(FVStringA& files, bool play_now, int back_start, int back_vol, int music_vol, bool mute) = 0;
    // 设置音量
    virtual void SetVolume(int back_vol, int music_vol) = 0;
    // 静音模式
    virtual void SetMute(bool v) = 0;
    // 消毁已经加载的背景音乐
    virtual void DelBack() = 0;
    // 消毁已经加载的普通音效
    virtual void DelMusic() = 0;

    // 背景音乐
    // 从第一曲播放
    virtual void BackPlay(int idx = -1) = 0;
    // 暂停
    virtual void BackPause() = 0;
    // 恢复
    virtual void BackResume() = 0;
    // 停止
    virtual void BackStop() = 0;
    // 下一曲
    virtual void BackNext() = 0;
    // 上一曲
    virtual void BackPrev() = 0;
    // 随机下一曲
    virtual void BackRand() = 0;

    // 普通音效
    virtual void PlaySnd(const ACHAR* file) = 0;
    virtual void PlaySnd(const WCHAR* file) = 0;

    //
    virtual const FFCHAR* GetError() = 0;

    // 屏蔽以下接口
protected:
    // 绑定到引擎的时候调用此函数
    virtual bool Initialize(){ return true; }
};